package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 使用字符流读取文本数据
 */
public class ISRDemo {
    public static void main(String[] args) throws IOException {
        //读取osw.txt文件中文本信息
        FileInputStream fis=new FileInputStream("osw.txt");
        /*
        读取文件的第一个字
        如果该文件的第一个字时汉子,为我们可以连续读取3个字节,将其还原为字符串
         */
 //       byte[] data=new byte[3];
//        fis.read(data);
//        String str=new String(data,"UTF-8");
//        System.out.println(str);
        /*
        上述代码并不能完全做到读取文件的第一个字,因为中文的UTF-8编码每个字是
        3个字节,但是英文则仅占1个字节.所以如果文件第一个字是英文则出现问题
         */

        //创建一个足够大的数字
//        byte[] data=new byte[200];
//        int len =fis.read(data);//一次性读取200字节,并接受实际读取到的字节数量
//        System.out.println(len);
//        String str=new String(data,0,len,"UTF-8");
//        System.out.println(str);
        //使用字符流读取文本数据
        InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
        /*
        int read
        读取一个字符,并以int型返回(实际内容是一个char)如果返回值为-1则表示文件末尾
         */
//        int d=isr.read();//字符流会根据字符集自行判断读取几个字节来读取到该字符
//        System.out.println((char)d);
        int d;
        while ((d=isr.read())!=-1) {
            System.out.print((char) d);
        }

        fis.close();
    }
}
